package Hot100;

import common.ListNode;

import java.util.Stack;

/**
 * @author zhangmin
 * @create 2021-12-20 14:42
 */
public class removeNthFromEnd19 {

    /** 19. 删除链表的倒数第 N 个结点
     * 给你一个链表，删除链表的倒数第 n 个结点，并且返回链表的头结点。
     * 快慢指针：快指针先走n步
    * */
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode fast=head,slow=head;
        while (n-->0&&fast!=null){
            fast=fast.next;
        }
        if (fast==null){
            //说明第一个节点即为倒数第n个节点
            return head.next;
        }
        while (fast.next!=null){
            fast=fast.next;
            slow=slow.next;
        }
        //此时slow的next即为倒数第n个节点
        slow.next=slow.next.next;
        return head;
    }


}
